import Vue from './runtime/index'
import { query } from './util/index'
const idToTemplate = (id => {
    const el = query(id)
    return el && el.innerHTML
})
//保留上一个$mount方法
const mount = Vue.prototype.$mount
//重写$mount方法
console.log('重写$mount方法并挂载到vue实例上面')
Vue.prototype.$mount = function (el, hydrating) {
    el = el && query(el);
    const options = this.$options;
    if (!options.render) {
        let template = options.template;
        if (template) {
            if (typeof template === 'string') {
              if (template.charAt(0) === '#') {
                template = idToTemplate(template)
              }
            } else if (template.nodeType) {
                template = template.innerHTML
            } else {
              return this
            }
        } else if (el) {
            template = getOuterHTML(el)
        }
        if (template) {
            //没有render函数用template创建render函数
            console.log("组件没有render函数用template创建render函数")
            options.render = (h) => {
                return h("div",'6666666666')
            }
        }
    }
    //调用缓存的mount方法
    console.log('调用缓存的mount方法',this)
    return mount.call(this, el, hydrating)
};
function getOuterHTML (el){
    if (el.outerHTML) {
      return el.outerHTML
    } else {
      const container = document.createElement('div')
      container.appendChild(el.cloneNode(true))
      return container.innerHTML
    }
}
export default Vue